xend: pci: show error msg properly if pciback/pci-stub are not loaded
authorKeir Fraser <keir.fraser@citrix.com>
Mon, 23 Nov 2009 07:23:07 +0000 (07:23 +0000)
committerKeir Fraser <keir.fraser@citrix.com>
Mon, 23 Nov 2009 07:23:07 +0000 (07:23 +0000)
Signed-off-by: Dexuan Cui <dexuan.cui@intel.com>
tools/python/xen/util/pci.py
tools/python/xen/xend/XendNode.py
tools/python/xen/xm/main.py

index e89bf3446fd5ccbd2d43e74f2c1c3074fec3a701..c5f70eee73cb258d00715ac9c31e94e64abf4234 100644 (file)
@@ -517,20 +517,17 @@ def find_all_assignable_devices():
     '''
     sysfs_mnt = find_sysfs_mnt()
     pciback_path = sysfs_mnt + SYSFS_PCIBACK_PATH
-    pci_names = os.popen('ls ' + pciback_path).read()
-    pci_list = extract_the_exact_pci_names(pci_names)
-    dev_list = []
-    for pci in pci_list:
-        dev = PciDevice(parse_pci_name(pci))
-        dev_list = dev_list + [dev]
-
     pcistub_path = sysfs_mnt + SYSFS_PCISTUB_PATH
-    pci_names = os.popen('ls ' + pcistub_path).read()
-    pci_list = extract_the_exact_pci_names(pci_names)
+    pci_names1 = os.popen('ls %s 2>/dev/null' % pciback_path).read()
+    pci_names2 = os.popen('ls %s 2>/dev/null' % pcistub_path).read()
+    if len(pci_names1) + len(pci_names2) == 0 :
+        return None
+    pci_list = extract_the_exact_pci_names(pci_names1)
+    pci_list = pci_list + extract_the_exact_pci_names(pci_names2)
+    dev_list = []
     for pci in pci_list:
         dev = PciDevice(parse_pci_name(pci))
         dev_list = dev_list + [dev]
-
     return dev_list
 
 def transform_list(target, src):
index 4ee63f6d46cac92d87be316b2964937cf46aae19..f11cd795326cd4aae5a342ba3ec1096c01beff9d 100644 (file)
@@ -924,6 +924,8 @@ class XendNode:
 
         # Each element of dev_list is a PciDevice
         dev_list = PciUtil.find_all_assignable_devices()
+        if dev_list is None:
+            return None
  
         # Each element of devs_list is a list of PciDevice
         devs_list = PciUtil.check_FLR_capability(dev_list)
index 4ba6ab8d1438cb1d06807cdd406c08dea8daddb6..78f50ade78e8d2ed6d315f154e1ec219e25c7925 100644 (file)
@@ -2313,6 +2313,9 @@ def xm_pci_list_assignable_devices(args):
     arg_check(args, "pci-list-assignable-devices", 0)
 
     devs =  server.xend.node.pciinfo()
+    if devs is None:
+        print "Error: pciback/pci-stub not loaded?"
+        return
  
     fmt_str = "%(domain)04x:%(bus)02x:%(slot)02x.%(func)01x"
     for x in devs: